<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <h3>{{ title }}</h3>
    <hr />
    <button @click="getTitle">调用getTitle</button>
    <button @click="updateTitle">update title</button>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  // 接收父组件通过自定义属性传递的数据
  props: {
    msg: String,
  },
  // 组件初次被调用的时候, 会自动执行, 执行时间和created生命周期钩子函数接近
  setup() {
    console.log("setup");
    // 此处可以返回一个对象, 对象中的数据会自动和组件中的data数据合并, 对象中的方法会自动合并到methods中
    return {
      // 此处直接返回的数据并不是一个响应式数据, 所以更新数据的时候, 视图不会自动更新
      title: "hello vue.js!!!",
      getTitle() {
        console.log(this.title);
      },
      updateTitle() {
        this.title = "new title";
        console.log(this.title);
      },
    };
  },
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  display: inline-block;
  margin: 0 10px;
}
a {
  color: #42b983;
}
</style>
